package com.azt.novel.book.service;


import com.azt.novel.book.dto.req.BookAddReqDto;
import com.azt.novel.book.dto.req.BookCommentReqDto;
import com.azt.novel.book.dto.resp.BookInfoRespDto;
import com.azt.novel.book.dto.resp.BookRankRespDto;
import com.azt.novel.common.resp.RestResp;
import io.swagger.v3.oas.annotations.Parameter;
import org.springframework.web.bind.annotation.PathVariable;

import java.security.NoSuchAlgorithmException;
import java.util.List;

public interface IBookInfoService{
    RestResp<Void> saveBook(BookAddReqDto dto);
    /**
     * 小说推荐列表查询接口
     * @param bookId
     * @return
     */
    RestResp<List<BookInfoRespDto>> listRecBooks(Long bookId) throws NoSuchAlgorithmException;

    /**
     * 小说新书榜查询接口
     * @return
     */
    RestResp<List<BookRankRespDto>> listNewestRankBooks();

    /**
     * 小说新书榜查询接口
     * @return
     */
    RestResp<List<BookRankRespDto>> listUpdateRankBooks();

    /**
     * 小说点击榜查询接口
     * @return
     */
    RestResp<List<BookRankRespDto>> listVisitRankBooks();

    /**
     * 小说信息查询接口
     * @param bookId
     * @return
     */
    RestResp<BookInfoRespDto> getBookById(
         @Parameter(description = "小说 ID") @PathVariable("id") Long bookId);

    /**
     * 增加小说点击量
     * @param bookId
     * @return
     */
    RestResp<Void> addVisitCount(@Parameter(description = "小说 ID") Long bookId);

    /**
     * 批量查询小说信息
     *
     * @param bookIds 小说ID列表
     * @return 小说信息列表
     */
    RestResp<List<BookInfoRespDto>> listBookInfoByIds(List<Long> bookIds);

    /**
     * 发表评论
     *
     * @param dto 评论相关 DTO
     * @return void
     */
    RestResp<Void> saveComment(BookCommentReqDto dto);


    /**
     * 删除评论
     *
     * @param dto 评论相关 DTO
     * @return void
     */
    RestResp<Void> deleteComment(BookCommentReqDto dto);

    /**
     * 修改评论
     *
     * @param dto 评论相关 DTO
     * @return void
     */
    RestResp<Void> updateComment(BookCommentReqDto dto);
}
